rsync同步+inotify实时同步部署

您所在的位置:网站首页 rsync -WazvP rsync同步+inotify实时同步部署

rsync同步+inotify实时同步部署

2024-01-06 03:08| 来源: 网络整理| 查看: 265

目录 一、rsync简介二、rsync同步源三、配置rsync源1、基本思路2、rsync命令3、配置源的两种表达方式4、免交互格式 四、配置rsync远程同步1、关防火墙、安装相应的软件2、建立/etc/rsyncd.conf 配置文件3、为备份账户创建数据文件4、保证所有用户对源目录/var/www/html(需要备份的文件目录)都有读取权限5、启动 rsync 服务程序6、修改从节点配置文件7、验证8、企业中不可能手动执行,一般都要使用周期性任务 五、inotify简介1、调整inotify内核参数(优化)2、使用inotify-tools辅助工具3、编写同步脚本 六、rsync+inotify实时同步1、调整 inotify 内核参数2、安装 inotify-tools3、编写触发式同步脚本4、验证

一、rsync简介

一款快速增量备份工具: rsync全称remote sync,是一种更高效、可以本地或远程同步的命令,之所以高效是因为rsync会对需要同步的源和目的进度行对比,只同步有改变的部分,所以比scp命令更高效,但是rsync本身是一种非加密的传输,可以借助-e选项来设置具备加密功能的承载工具进行加密传输

二、rsync同步源

指备份操作的远程服务器,也称为备份源。 在这里插入图片描述 当B服务器是客户机及发起端时,B服务器同步A服务器的数据,A服务器就是备份源。

如果A服务器同步B服务器的数据,同理A服务器是客户机及发起端,B服务器就是备份源

三、配置rsync源 1、基本思路

建立rsyncd.conf配置文件、独立的账号文件

配置文件rsyncd.conf 需手动配置,语法类似于Samba配置认证配置auth users、secrets file,不加则为匿名 rsync账号文件 采用“用户名:密码”的格式记录,每行一个用户记录独立的账号数据,不依赖系统账号 启用rsync的 --daemon模式 通过 --daemon独自提供服务:rsync --daemon可以通过执行kill $(cat /var/run/rsyncd.pid)关闭服务 2、rsync命令 #命令的用法 rsync [选项] 原始位置 目标位置 #----------常用选项-------------------------- -r:递归模式,包含目录及子目录中的所有文件。 -l:对于符号链接文件仍然复制为符号链接文件。 -v:显示同步过程的详细(verbose)信息。 -z:在传输文件时进行压缩(compress)。 -a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。 -p:保留文件的权限标记。 -t:保留文件的时间标记。 -g:保留文件的属组标记(仅超级用户使用)。 -o:保留文件的属主标记(仅超级用户使用)。 -H:保留硬连接文件。 -A:保留 ACL 属性信息。 -D:保留设备文件及其他特殊文件。 --delete:删除目标位置有而原始位置没有的文件,即删除差异文件,保留一致性。 --checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。 --password-file=file:从file中得到密码,用于免交互处理,file文件的权限要是600 3、配置源的两种表达方式

将指定的资源下载到本地/root 目录下进行备份。 格式一:

用户名@主机地址::共享模块名 例如: [email protected]::wwwroot /opt

格式二:

rsync://用户名@主机地址/共享模块名 例如: rsync://[email protected]/wwwroot /opt 4、免交互格式 echo "密码" > /etc/密码文件 chmod 600 /etc/密码文件 #设置周期性任务 crontab -e 30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/密码文件 [email protected]::wwwroot /opt systemctl restart crond systemctl enable crond 四、配置rsync远程同步 主机操作系统IP地址安装包MasterCentOS7192.168.109.12rsyncSlaveCentOS7192.168.109.22rsync / inotify-tools-3.14.tar.gz

master

1、关防火墙、安装相应的软件 systemctl stop firewalld.service setenforce 0 #检查是否安装,一般系统已默认安装rsync rpm -q rsync yum -y install rsync

在这里插入图片描述

2、建立/etc/rsyncd.conf 配置文件

如采用匿名的方式,只要将下面配置中的“auth users”和“secrets file”配置项去掉即可。

vim /etc/rsyncd.conf uid = root gid = root use chroot = yes address = 192.168.109.12 port 873 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid hosts allow = 192.168.109.0/24 [wwwroot] path = /var/www/html comment = Document Root of www.test.com read only = yes dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z auth users = backuper zhangsan secrets file = /etc/rsyncd_users.db #---------配置解释---------------------------------------------- uid = root gid = root use chroot = yes #禁锢在源目录 address = 192.168.109.12 #监听地址,监听本机地址 port 873 #监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看 log file = /var/log/rsyncd.log #日志文件位置 pid file = /var/run/rsyncd.pid #存放进程 ID 的文件位置 hosts allow = 192.168.109.0/24 #允许同步的客户机网段 [wwwroot] #共享模块名称 path = /var/www/html #源目录的实际路径(同步的目录) comment = Document Root of www.test.com read only = yes #是否为只读 dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不再压缩的文件类型 auth users = backuper zhangsan #授权账户,多个账号以空格分隔 secrets file = /etc/rsyncd_users.db #存放账户信息的数据文件

在这里插入图片描述

3、为备份账户创建数据文件

无须建立同名系统用户

vim /etc/rsyncd_users.db zhangsan:123123 chmod 600 /etc/rsyncd_users.db

在这里插入图片描述 在这里插入图片描述

4、保证所有用户对源目录/var/www/html(需要备份的文件目录)都有读取权限 yum -y install httpd chmod +r /var/www/html ls -ld /var/www/html

在这里插入图片描述 在这里插入图片描述

5、启动 rsync 服务程序 #启动 rsync 服务,以独立监听服务的方式(守护进程)运行 rsync --daemon netstat -natp | grep rsync

在这里插入图片描述

关闭 rsync 服务 kill $(cat /var/run/rsyncd.pid)

slave

6、修改从节点配置文件 systemctl stop firewalld.service setenforce 0 yum -y install rsync cd /opt mkdir abc chmod 777 abc vim /etc/server.pass 123123 chmod 600 /etc/server.pass

在这里插入图片描述 在这里插入图片描述

7、验证

master

cd /var/www/html/ vim 1.html

在这里插入图片描述

slave

rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt/abc ls abc

在这里插入图片描述

8、企业中不可能手动执行,一般都要使用周期性任务 #设置周期性任务 crontab -e 0 1 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt/abc systemctl restart crond systemctl enable crond 五、inotify简介

Inotify 是一个 Linux内核的特性,可以监控文件系统的变动情况,并做出通知响应,辅助软件:inotify-tools

1、调整inotify内核参数(优化)

/etc/sysctl.conf(内核参数配置文件),需要配置

max_queue_events :监控事件队列大小max_user_instances :最多监控实例max_user_watches :每个实例最多监控文件数配置的监控数量应该大于监控目标的总文件数 例如: vim /etc/sysctl.conf max_queue_events = 16384 max_user_instances = 1024 max_user_watches = 1048576 2、使用inotify-tools辅助工具

inotifywait:用于持续监控,实时输出结果

可监控modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)等各种事件,一有变动立即输出结果。

inotifywatch:用于短期监控,任务完成后再输出结果

可用来收集文件系统变动情况,并在运行结束后输出汇总的变化情况。 例: inotifywait -mrq -e modify,create,attrib,move,delete 文件或目录 #---------参数解释------------ -m 持续进行监控 -r 递归监控所有子对象 -q 简化输出信息 -e 指定要监控哪些事件类型 modify 修改 create 创建 attrib 属性更改 move 移动 deletc 删除 3、编写同步脚本

编写思路: (1)先设置两个变量:监控和执行备份 (2)使用while 、read持续获取监控结果 (3)根据结果判断,执行不同的操作

vim /opt/inotify_rsynx.sh #!/bin/bash #定义两个变量:监控文件,执行备份 INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete 需要监控的目录或文件" RSYNC_CMD="rsync -azH --delete --password-file=/etc/密码文件 刚才监控的目录或文件 用户名@主机地址::共享模块名" #while read获取监控结果 $INOTIFY_CMD | while read DIRECTORY EVENT FILE do #如果rsync没有运行,执行rsync进行备份操作 if [ $(pgrep rsync | wc -l) -eq 0 ] ; then $RSYNC_CMD fi done 六、rsync+inotify实时同步

master

#修改rsync源服务器配置文件 vim /etc/rsyncd.conf #关闭只读,上行同步需要可以写 read only = no #重启服务 kill `cat /var/run/rsyncd.pid` netstat -natp | grep rsync rsync --daemon netstat -natp | grep rsync chmod 777 /var/www/html

在这里插入图片描述 在这里插入图片描述

slave

1、调整 inotify 内核参数 max_queue_events(监控事件队列,默认值为16384)max_user_instances(最多监控实例数,默认值为128)max_user_watches(每个实例最多监控文件数,默认值为8192)当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。 cat /proc/sys/fs/inotify/max_queued_events cat /proc/sys/fs/inotify/max_user_instances cat /proc/sys/fs/inotify/max_user_watches vim /etc/sysctl.conf fs.inotify.max_queued_events = 17000 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 102400 sysctl -p

在这里插入图片描述 在这里插入图片描述

2、安装 inotify-tools yum -y install gcc gcc-c++ make #放入安装包 tar zxvf inotify-tools-3.14.tar.gz -C /opt cd /opt/inotify-tools-3.14/ ./configure && make && make install

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

3、编写触发式同步脚本 vim /opt/inotify_rsync.sh #!/bin/bash INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/" RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ [email protected]::wwwroot" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -le 0 ] ; then $RSYNC_CMD fi done

在这里插入图片描述

cd /opt/ chmod +x inotify_rsync.sh . /opt/inotify_rsync.sh & #加入开机自动执行 chmod +x /etc/rc.d/rc.local echo '/opt/inotify_rsync.sh' >> /etc/rc.d/rc.local

在这里插入图片描述

4、验证

slave

cd /opt/abc touch test.html ls rm -rf test.html ls

在这里插入图片描述

master

cd /var/www/html ls

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3